import cv2 as cv
import pyprojroot
from matplotlib import pyplot as plt
import numpy as np
def here(s):
return str(pyprojroot.here(s))第2章: 画像のデータ表現
2.1, 2.2
各画素のRGBの明度値の平均値が128以上の場合には, (R, G, B)=(255, 255, 255), 128未満の場合には (R, G, B)=(0, 0, 0) に書き換えることで, 画像全体を2値画像に変換するコードを作成せよ.
各画素の明度値をRGBの明度値の平均値に置き換えることで, 画像をグレースケール化し, 保存するコードを作成せよ.
mat_woman = cv.imread(here("nicetak/image/img/woman.png"))
mat_woman_rgb = cv.cvtColor(mat_woman, cv.COLOR_BGR2RGB)height, width, _ = mat_woman.shape
mat_woman_binary = [[np.sum(mat_woman[h][w]) >= 128 * 3 for w in range(width)] for h in range(height)]
mat_woman_gray = [[np.mean(mat_woman[h][w]) for w in range(width)] for h in range(height)]2.3
画像のR,G,Bの各チャンネルについて, 明度値の平均値と分散を表示するコードを作成し, 様々な画像を入力して試してみよ.
Mean:
R(109), G(51), B(33)
SD:
R(57), G(43), B (43)
Mean:
R(199), G(204), B(197)
SD:
R(67), G(62), B (74)
Mean:
R(89), G(137), B(134)
SD:
R(71), G(65), B (63)